package com.example.serviceapplication;

import android.app.Service;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;

import java.io.IOException;

public class MusicService extends Service {
    public MusicService() {
    }
    //设计中间人--音乐代理
    class MusicAgency extends Binder {
        public  void paly(String path){
            //开放给用户的方法
            playMusic(path);
        }
        public  void stop(){
            //开放给用户的方法
            stopMusic();
        }
    }
    static MediaPlayer mp;

    //播放指定路径下的音乐文件
    public  static void playMusic(String path){
        //String path= Environment.getExternalStorageDirectory()+"/Music/周云蓬 - 山鬼.mp3";
        //创建一个MediaPlayer对象

//        if (mp!=null){
//            if (mp.isPlaying()){
//                //停止能播放
//                mp.stop();
//            }
//            //释放资源
//            mp.release();
//        }
        mp=new MediaPlayer();


        //设置mp,播放的媒体类型
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

        try {
            //设置，播放的音乐文件,数据源
            mp.setDataSource(path);
            //准备播放，耗时操作，在子线程中完成
            mp.prepare();
            //监听，什么时候准备好
            mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    //准备好之后执行的操作
                    mp.start();//播放，必须要在准备好之后
                }
            });
            //停止,监听
            mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    //播放完毕，释放资源
                    mp.release();
                }
            });


        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    //停止播放
    public  static void stopMusic(){
        if (mp!=null&&mp.isPlaying()){
            mp.pause();
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        //当服务和应用绑定后，调用的方法
        //返回一个中间人对象给应用程序

        return new MusicAgency();
    }
}
